% !Mode:: "TeX:UTF-8"

\chapter{技术路线}
\section{系统总体架构}
系统总体架构图见图 2-1 系统架构图我们根据该要求，将系统分成如下模块：
\begin{enumerate}
    \item 树莓派模块：负责控制硬件，主要功能有：
        \begin{itemize}
            \item{采集数据}：收集硬件所获得的数据。
            \item{上传数据}: 以一定格式将数据上传至服务器。
            \item{更新上传时间}: 从服务器获得新的上传时间并应用。
        \end{itemize}
    \item 服务器模块：负责存储数据，充当树莓派与网页通信的媒介。主要功能有：
        \begin{itemize}
            \item{插入操作}：插入从树莓派获得的数据。
            \item{更新操作}: 按网页要求更新数据。
            \item{查询操作}: 返回网页或树莓派所需数据。
        \end{itemize}本次根据需求分析不需要插入操作。
    \item 网页模块：负责人机交互，主要功能有：
        \begin{itemize}
            \item{发出更新命令}：插入从树莓派获得的数据。
            \item{显示地图}: 用户能看到地图，并看到设备历史经过点。
            \item{显示设备列表}: 用户能看到自己使用的设备。
            \item{显示历史信息}：用户能看到单个设备的所有信息，或按需查询单个信息。
        \end{itemize}本次不需要设计登录界面。
\end{enumerate}
\begin{figure}[htbp]
  \centering
  \includegraphics[width=1\textwidth]{picture/total}
  \caption{系统架构图}\label{fig:total}
  \vspace{\baselineskip}
\end{figure}

\section{本人所承担部分与总体架构的关系}
\begin{itemize}
  \item{1}：服务器的开发是为树莓派提供一个持久化存储，并且便于前端查询与显示，实现数据收集，数据存储和数据显示之间的解耦。
  \item{2}：我起初学习springboot框架结合mybatis框架，由于springboot是较为主流的框架，利用注解为写代码提供清晰而便利的帮助。之后我尝试写第一版的equipment的相关的controller，service，DAO，entity，以及Data里的entity，与xml。controller是为前端调用提供一些URL接口，同时树莓派上传数据也使用这个类里的接口，service是实现一些功能，entity实体类是定义equipment与data里的属性以及相应的get，set方法。DAO是一个接口与.xml文件进行对数据库的操作，这一点也是mybatis的规范，通过类似于HTML还包含着sql语句的语言，完成对数据库的增删改查。
  \item{3}：服务器是起到一个承上启下的作用。
\end{itemize}

\section{技术选型}
我选择java语言作为我开发服务器的语言，因为其有较为主流的框架。我选择springboot框架，是因为我在之前的实践课程中接触过一些，写过较为简单的代码。我选择mybatis框架，是因为其使用较为广泛，而且它为sql语句提供相应的规范。